package com.qfedu.bigdataapp.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.qfedu.bigdataapp.adapter.NewsAdapter;
import com.qfedu.bigdataapp.bean.NewsEntity;
import com.qfedu.bigdataapp.R;

import java.util.ArrayList;
import java.util.List;

public class ListViewActivity extends AppCompatActivity {

    private ListView lvNews;
    private List<NewsEntity> newList;//将数据集合list变成全局变量，方便访问和使用

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        //1、获取到布局文件的列表控件
        lvNews = findViewById(R.id.lv_news);

        //2、为列表控件设置数据
        //2.1、首先要确定要展示什么样的数据
        NewsEntity entity1 = new NewsEntity();
        entity1.setTitle("全国两会在北京召开");
        entity1.setContent("新华社 3月5日电    全国人民代表大会第二十届第一次会议于3月5日在北京召开... ....");
        entity1.setOriginal("新华社");
        entity1.setComment(2000);
        entity1.setShare(500);
        entity1.setLike(1000);

        NewsEntity entity2 = new NewsEntity();
        entity2.setTitle("河北省卫健委最新通知");
        entity2.setContent("各市（含定州、辛集市）卫生健康委（局）、中医局，雄安新区管委...");
        entity2.setOriginal("长城网");
        entity2.setComment(1234);
        entity2.setShare(101);
        entity2.setLike(20000);

        NewsEntity entity3 = new NewsEntity();
        entity3.setTitle("北京遭受近年来最严重的沙尘天气");
        entity3.setContent("昨天到今天，北京、河北、天津等华北地区遭受了23年第一场最大范围的沙尘天气...");
        entity3.setOriginal("人民日报");
        entity3.setComment(1234);
        entity3.setShare(101);
        entity3.setLike(20000);

        NewsEntity entity4 = new NewsEntity();
        entity4.setTitle("中国版ChatGPT来了？");
        entity4.setContent("新京报贝壳财经记者从百度方面获悉，百度计划于3月16日14时在北京总部召开新闻发布会，主题围绕公司旗下的类ChatGPT应用文心一言。百度创始人、董事长兼首席执行官李彦宏，百度首席技术官王海峰将出席。");
        entity4.setOriginal("新京报");
        entity4.setLike(50000);
        entity4.setComment(999);
        entity4.setShare(1314);

        NewsEntity entity5 = new NewsEntity();
        entity5.setTitle("全国两会在北京召开召开召开");
        entity5.setContent("新华社 3月5日电    全国人民代表大会第二十届第一次会议于3月5日在北京召开... ....");
        entity5.setOriginal("新华社");
        entity5.setComment(2000);
        entity5.setShare(500);
        entity5.setLike(1000);

        NewsEntity entity6 = new NewsEntity();
        entity6.setTitle("河北省卫健委最新通知最新通知最新通知");
        entity6.setContent("各市（含定州、辛集市）卫生健康委（局）、中医局，雄安新区管委...");
        entity6.setOriginal("长城网");
        entity6.setComment(1234);
        entity6.setShare(101);
        entity6.setLike(20000);

        NewsEntity entity7 = new NewsEntity();
        entity7.setTitle("北京遭受近年来最严重的沙尘天气沙尘天气沙尘天气沙尘天气");
        entity7.setContent("昨天到今天，北京、河北、天津等华北地区遭受了23年第一场最大范围的沙尘天气...");
        entity7.setOriginal("人民日报");
        entity7.setComment(1234);
        entity7.setShare(101);
        entity7.setLike(20000);

        NewsEntity entity8 = new NewsEntity();
        entity8.setTitle("中国版ChatGPT来了？ChatGPT来了ChatGPT来了");
        entity8.setContent("新京报贝壳财经记者从百度方面获悉，百度计划于3月16日14时在北京总部召开新闻发布会，主题围绕公司旗下的类ChatGPT应用文心一言。百度创始人、董事长兼首席执行官李彦宏，百度首席技术官王海峰将出席。");
        entity8.setOriginal("新京报");
        entity8.setLike(50000);
        entity8.setComment(999);
        entity8.setShare(1314);

        //把所有数据作为一个数据集合整体，设置给ListView进行展示
        //思路：使用Java中的集合类存储所有的新闻信息
        newList = new ArrayList<>();
        newList.add(entity1);
        newList.add(entity2);
        newList.add(entity3);
        newList.add(entity4);
        newList.add(entity5);
        newList.add(entity6);
        newList.add(entity7);
        newList.add(entity8);

        //设计模式: 适配器模式
        //Adapter
        NewsAdapter adapter = new NewsAdapter(this, newList);

        //把适配器类设置给ListView控件
        lvNews.setAdapter(adapter);

        //为ListView添加条目点击事件
        lvNews.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                //当用户点击ListView的某个条目时，程序会到此处执行
                openNewsDetail(position);
            }
        });

    }

    /**
     * 该方法用于跳转到新闻的详情页面，去展示对应的新闻的详细内容
     */
    private void openNewsDetail(int position) {
        //1、先通过position参数 拿到具体用户点击的哪条新闻
        NewsEntity entity = newList.get(position);
        Intent intent = new Intent(this, NewsDetailActivity.class);
        //通过Intent进行页面跳转时，为了能够展示具体所点击的新闻内容，需要告诉新闻详情页面要展示哪个新闻
        intent.putExtra("news", entity);
        startActivity(intent);
//        Toast.makeText(this, "用户点击了第"+(position+1)+"条新闻", Toast.LENGTH_SHORT).show();
    }
}